﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AvaProvi
{
    [Serializable]
    public class clsEquipamento_CRN:clsEstado,IControlEstados
    {
        public clsInmueble_CRN Inmueble { get; set; }

        public string Descripcion { get; set; }

        public decimal Distancia { get; set; }

        public clsEquipamento_CRN(clsInmueble_CRN objInmueble, string descripcion):base()
        {
            this.Inmueble = objInmueble;
            this.Descripcion = descripcion;
            this.Distancia = 0;
        }

        #region IControlEstados Members

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                if (this.EsNuevo)
                    return CreaEquipamento();
                else
                {
                    if (this.EsModificado)
                        return ModificaEquipamento();
                    else
                        return EliminaEquipamento();
                }
            }
            return false;
        }

        private bool EliminaEquipamento()
        {
            clsEquipamento_CD objEquipamento = new clsEquipamento_CD();
            return objEquipamento.EliminaEquipamento(this);
        }

        private bool ModificaEquipamento()
        {
            clsEquipamento_CD objEquipamento = new clsEquipamento_CD();
            return objEquipamento.ModificaEquipamento(this);
        }

        private bool CreaEquipamento()
        {
            clsEquipamento_CD objEquipamento = new clsEquipamento_CD();
            if (objEquipamento.CreaEquipamento(this))
            {
                this.EsModificado = true;
                return true;
            }
            return false;
        }

        public bool DatosValidos()
        {
            return true;
        }

        public static clsEquipamento_CRN RecuperaEquipamento(clsInmueble_CRN objInmueble, string descripcion)
        {
            clsEquipamento_CRN objEquipamento = new clsEquipamento_CRN(objInmueble, descripcion);
            clsEquipamento_CD objEquipamento_CD= new clsEquipamento_CD();
            dsInmoviliario.EquipamentoRow objEquipamentoRecuperado = objEquipamento_CD.RecuperaEquipamento(objInmueble.Avaluo.IdAvaluo, descripcion);
            if (objEquipamentoRecuperado != null)
            {
                objEquipamento.Distancia = objEquipamentoRecuperado.Distancia;
                objEquipamento.EsModificado = true;
            }
            return objEquipamento;
        }
        #endregion
    }
}
